﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Persistente;
 
namespace Persistente.Produto
{
    public class PProduto
    {
   
        private DB_SIMETRIA _db;
        private SqlConnection _conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_SIMETRIA_SQL"].ConnectionString);
        public int Salvar(int idProduto, string dsProduto, int qtValorMedio, string teFoto, int nrNotaMedia, string teEspecificacoes, int cdProduto, string nmProduto, string teLink, int idMarca, int idSubtipoProduto)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var tbProduto = new tb_produto();
                tbProduto.id_produto = idProduto;
                tbProduto.nm_produto = nmProduto;
                tbProduto.cd_produto = cdProduto;
                tbProduto.ds_produto = dsProduto;
                tbProduto.qt_valor_medio = qtValorMedio;
                tbProduto.nr_nota_media = nrNotaMedia;
                tbProduto.te_foto = teFoto;
                tbProduto.te_link = teLink;
                tbProduto.te_especificacoes = teEspecificacoes;
                tbProduto.marca_id_marca = idMarca;
                tbProduto.subtipo_id_subtipo = idSubtipoProduto;
                _db.AddTotb_produto(tbProduto);
                _db.SaveChanges();

                return tbProduto.id_produto;

            }
            catch (Exception e)
            {
                return 0;
            }
            finally
            {
                _db.Connection.Close();
            }

        }

        public DataSet pegarProdutos(string dsProduto = null, int qtValorMedio = 0, string teFoto = null, int nrNotaMedia = 0, string teEspecificacoes = null, int cdProduto= 0, string nmProduto = null, string teLink = null, int idMarca=0, int idSubtipoProduto = 0)
        {

            var ds = new DataSet();

            string query = "SELECT ";
            query += " p.id_produto";
            query += ", p.nm_produto";
            query += ", p.ds_produto";
            query += ", p.qt_valor_medio";
            query += ", p.te_foto";
            query += ", p.nr_nota_media";
            query += ", p.te_especificacoes";
            query += ", p.cd_produto";
            query += ", p.te_link";
            query += ", stp.id_subtipo_produto";
            query += ", stp.nm_subtipo_produto";
            query += ", m.id_marca";
            query += ", m.nm_marca";
            query += " FROM tb_subtipo_produto stp,";
            query += "tb_marca m,";
            query += "tb_produto p" ;

            query += " WHERE stp.id_subtipo_produto = p.subtipo_id_subtipo";
            query += " AND m.id_marca = p.marca_id_marca";


            if (!string.IsNullOrEmpty(nmProduto))
            {
                query += " AND nm_produto LIKE '%" + nmProduto + "%'";
            }

            if (qtValorMedio != 0)
            {
                query += " AND p.qt_valor_medio =" + qtValorMedio;
            }

            if (nrNotaMedia != 0)
            {
                query += " AND p.nr_nota_media =" + nrNotaMedia;
            }

            if (!string.IsNullOrEmpty(teEspecificacoes))
            {
                query += " AND p.te_especificacoes LIKE '%" + teEspecificacoes + "%'";
            }

            if (cdProduto != 0)
            {
                query += " AND p.cd_produto =" + cdProduto;
            }

            if (!string.IsNullOrEmpty(teLink))
            {
                query += " AND p.te_link LIKE '%" + teLink + "%'";
            }

            if (idSubtipoProduto != 0)
            {
                query += " AND stp.id_subtipo_produto =" + idSubtipoProduto;
            }

            if (idMarca != 0)
            {
                query += " AND m.id_marca =" + idMarca;
            }

            var cmd = new SqlCommand(query, _conexao);

            cmd.Connection = _conexao;

            if (_conexao.State == ConnectionState.Closed)
            {
                _conexao.Open();
            }

            var dataAdapter = new SqlDataAdapter(cmd);
            dataAdapter.Fill(ds);

            _conexao.Close();

            return ds;
        }

        public bool Remover(int idProduto)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbProduto = _db.tb_produto.Where(q => q.id_produto == idProduto).FirstOrDefault();
                if (obTbProduto == null)
                {
                    return false;
                }
                else
                {
                    _db.tb_produto.DeleteObject(obTbProduto);
                    _db.SaveChanges();
                    return true;
                }

            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public tb_produto pegarProdutoPorId(int idProduto)
        {
           

            try
            {
                _db = new DB_SIMETRIA();
                return _db.tb_produto.Where(q => q.id_produto == idProduto).FirstOrDefault();
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }

        }

        public bool Alterar(int idProduto, tb_produto obTbProdutoNovo)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbProdutoVelho =
                    _db.tb_produto.Where(q => q.id_produto == idProduto).FirstOrDefault();

                obTbProdutoVelho.nm_produto = obTbProdutoNovo.nm_produto;
                obTbProdutoVelho.cd_produto = obTbProdutoNovo.cd_produto;
                obTbProdutoVelho.ds_produto = obTbProdutoNovo.ds_produto;
                obTbProdutoVelho.qt_valor_medio = obTbProdutoNovo.qt_valor_medio;
                obTbProdutoVelho.nr_nota_media = obTbProdutoNovo.nr_nota_media;
                obTbProdutoVelho.te_foto = obTbProdutoNovo.te_foto;
                obTbProdutoVelho.te_link = obTbProdutoNovo.te_link;
                obTbProdutoVelho.te_especificacoes = obTbProdutoNovo.te_especificacoes;
                obTbProdutoVelho.marca_id_marca = obTbProdutoNovo.marca_id_marca;
                obTbProdutoVelho.subtipo_id_subtipo = obTbProdutoNovo.subtipo_id_subtipo;


                _db.SaveChanges();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

    }
}
